package com.feri.fs.provider.core;



import common.bo.UserProjectBo;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

/**
 * @ClassName CodeGenUtils
 * @Description 生成源码-压缩文件
 * @Author xing
 * @Date 2021/11/9 10:08
 * @Version 1.0
 */
public class CodeGenUtils {
    /**
     * 生成源码的压缩文件，上传OSS*/
    public static String createCodeZip(UserProjectBo bo,String objname,Date etime) {
        //1.校验 略

        try {
            //2.获取数据库信息
            Map<String, Map<String, Map<String, String>>> map = DbUtils.getDbInfo(bo.getDburl() + ":" + bo.getDbport(),
                    bo.getDbname(), bo.getDbuser(), bo.getDbpass());
            //3.创建包对应的目录
            String fname = FileUtils.parsePageNameDir(bo.getPkname());
            String ctime = getTime();
            //4.结合模板，生成源码
            BeetlUtils.createSrc(map, bo.getPkname(), fname, bo.getAuthor(), ctime, bo.getPname());
            //5.生成压缩文件
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ZipUtils.createZip(FileUtils.baseDIR, baos);
            //6.上传OSS
            String preurl = AliOssUtils.upload(objname, baos.toByteArray(), etime);
            //返回源码下载链接
            if (preurl != null && preurl.length() > 0) {
                //删除过程中的文件夹
                FileUtils.delDirs(new File(FileUtils.baseDIR));
                return preurl;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private static String getTime(){
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    }
    public  static Date getTime(int hours){
        Calendar calendar=Calendar.getInstance();
        calendar.add(Calendar.HOUR_OF_DAY,hours);
        return calendar.getTime();
    }
}
